/**
 * 用户相关类型定义
 * 包含头像上传、级别配置等类型
 */

import { UserLevel } from '../common/enums';

/** 头像上传结果 */
export interface AvatarUploadResult {
  bucketName: string; // 存储桶名称
  fileName: string;   // 文件名
  url: string;        // 访问URL
}

/**
 * 级别配置类型定义
 */
export interface LevelConfig {
  name: string;      // 级别名称
  color: string;     // 级别主色
  minScore: number;  // 最低分数
  maxScore?: number; // 最高分数（可选，用于表示范围）
}

/**
 * 级别配置对象，统一管理所有级别相关信息
 */
export const LEVEL_CONFIGS: Record<UserLevel, LevelConfig> = {
  [UserLevel.NEWBIE]: {
    name: '新手',
    color: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)', // 紫蓝渐变，温和友好
    minScore: 0,
    maxScore: 99
  },
  [UserLevel.BRONZE]: {
    name: '青铜',
    color: 'linear-gradient(135deg, #f093fb 0%, #f5576c 100%)', // 粉红渐变，活力青春
    minScore: 100,
    maxScore: 199
  },
  [UserLevel.SILVER]: {
    name: '白银',
    color: 'linear-gradient(135deg, #4facfe 0%, #00f2fe 100%)', // 蓝青渐变，清新现代
    minScore: 200,
    maxScore: 299
  },
  [UserLevel.GOLD]: {
    name: '黄金',
    color: 'linear-gradient(135deg, #43e97b 0%, #38f9d7 100%)', // 绿青渐变，生机盎然
    minScore: 300,
    maxScore: 399
  },
  [UserLevel.DIAMOND]: {
    name: '钻石',
    color: 'linear-gradient(135deg, #fa709a 0%, #fee140 100%)', // 粉金渐变，尊贵华丽
    minScore: 400
  }
};

/**
 * 根据级别获取级别配置
 * @param level 用户级别
 * @returns 级别配置
 */
export function getLevelConfig(level: UserLevel): LevelConfig {
  return LEVEL_CONFIGS[level];
}

/**
 * 根据分数获取级别配置
 * @param score 总分数
 * @returns 级别配置
 */
export function getLevelConfigByScore(score: number): LevelConfig {
  if (score >= 400) return LEVEL_CONFIGS[UserLevel.DIAMOND];
  if (score >= 300) return LEVEL_CONFIGS[UserLevel.GOLD];
  if (score >= 200) return LEVEL_CONFIGS[UserLevel.SILVER];
  if (score >= 100) return LEVEL_CONFIGS[UserLevel.BRONZE];
  return LEVEL_CONFIGS[UserLevel.NEWBIE];
}
